All Essays
Best Practices For Programming, Part 1
originally posted: 2024-09-18 15:23:00
Over my decades of programming I've invented a couple of best practices recommendations. I'll describe two of them in this post.
I haven't seen either of these independently invented by anybody, much less discovering that they were long-standing wisdom. I've given lightning talks on the first one at Python conventions once or twice; the best feedback I got was from Raymond Hettinger, who if I recall correctly said "I think you're wrong but I don't have any counter-examples." ...
Continue reading Best Practices For Programming, Part 1
A Eulogy For Chester Morris
originally posted: 2017-09-11 23:00:00
Chester Morris was an actor on stage, film, and radio. He died forty-seven years ago today. He's mostly forgotten now, but I still enjoy his work, particularly his most famous movie and radio role: Boston Blackie.
Early Success
John Chester Brooks Morris was born February 16, 1901 in New York City. His parents were stage actors, and at 15 he dropped out of school and began his lifelong career on the stage, on...
Continue reading A Eulogy For Chester Morris
A Eulogy For Bob Bailey
originally posted: 2017-08-13 15:51:45
Bob Bailey died 34 years ago today. And while our story ends there, it doesn't start there. Instead, we start with—
The Strangely Specific End Of The Golden Age Of Radio
Technologies, particularly entertainment-delivery technologies, have a finite lifetime. They're invented, they become obsolete, and if they're lucky they get some use in between. The most...
Continue reading A Eulogy For Bob Bailey
A Quick 2017 Survey Of Rolling Linux Distributions
originally posted: 2017-03-14 02:14:20
tl;dr: I tried a bunch of rolling Linux distributions. Then I gave up. Then I won!
What I'm Using Right Now, And Why
When I switched from Windows to Linux in 2007, I had to choose which "distribution" to use. What's that mean? Well, Linux isn't like Windows or OS X—there isn't just "one" Linux you go and get. Technically Linux is just the kernel,...
Continue reading A Quick 2017 Survey Of Rolling Linux Distributions
An Adventure In Buying Home Audio Speakers
originally posted: 2014-12-19 23:43:22
True story: up until five years ago all I ever had were cheap all-in-one stereos that came bundled with speakers. It was all I could afford. Oh, how I dreamed of owning an expensive "component stereo"! That's where you have a separate receiver, turntable, tape deck, eight track, and speakers—gosh, maybe even a subwoofer!
Finally in September 2009 I took the plunge and bought a component stereo. But by then you didn't need all those...
Continue reading An Adventure In Buying Home Audio Speakers
The 2014 Lenovo X1 Carbon: Lenovo Giveth, And Lenovo Taketh Away
originally posted: 2014-06-19 16:57:13
If I could stand using trackpads I'd probably buy Apple laptops. Apple laptops have amazing build quality. And since they sell so many of them, an enormous ecosystem has emerged behind them—they get lots of neat peripherals, and you can get them fixed anywhere. Sadly I hate trackpads—my laptop mouse control of choice is the little rubber joystick mouse.
So I only buy Thinkpad laptops. Thinkpads also have excellent build quality, and tend to run Linux...
Continue reading The 2014 Lenovo X1 Carbon: Lenovo Giveth, And Lenovo Taketh Away
Bound Inner Classes For Python
originally posted: 2013-12-24 09:39:02
(This blog entry is my contribution to the 2013 Python Advent Calendar. I'm the entry for December 25th,; however, due to the time zone difference between here and Japan, I'm posting it during what is to me the morning of the 24th. Merry Christmas!)
In Python, something magic happens when you put a function inside a class. If you access that function through an instance of the class, you don't simply get the function back. Instead you get a new object we call...
Continue reading Bound Inner Classes For Python
Getting 7.1 HDMI Audio Working Under Ubuntu
originally posted: 2011-11-19 23:40:01
I run Ubuntu and XBMC on my home theater PC (hereafter HTPC). I connect my HTPC to my receiver and TV via HDMI. The HTPC is an nVidia ION 2 machine, so it's using nVidia's HDMI implementation. I also have a full 7.1 speaker system. But out-of-the-box, Ubuntu refused to recognize my full 7.1 system. All it would let me choose were stereo and 5.1 configurations.
After beating my head against this for a day or two I finally stumbled on the solution. The trick is...
Continue reading Getting 7.1 HDMI Audio Working Under Ubuntu
Quick One-Positional-Argument Function Currying In Python
originally posted: 2011-11-01 14:48:12
Function "currying" in Python means pre-adding arguments to a function. If you have a function that takes two arguments, you can create a new function from it that only takes one, if you can somehow automatically set the second parameter. (My understanding is that the term "curry" isn't totally correct here; the correct mathematical term would be "partial application". Calling this "currying" is but one of the Python...
Continue reading Quick One-Positional-Argument Function Currying In Python
Rise From Your Grave
originally posted: 2011-11-01 14:44:23
It's been three years since I last posted. I have an excuse: in April of 2007 I got me a Internet Job! And sadly it's left me no time for essay-writing.
But I'm gonna try and revive my blog. To that end, I've finally added a reStructuredText renderer to my homegrown blogging tool PySa. Previously I had to write blog entries in HTML; precise but laborious. Now that I can write in ReST perhaps I can knock out essays a bit faster.
Also, my blog is now...
Continue reading Rise From Your Grave
Floating-Point Numbers Are Precise!
originally posted: 2010-05-22 09:47:31(What they lack is accuracy!)
There's a great deal of misunderstanding about floating-point numbers. Better men than I have tried to dispell the haze of confusion that surrounds them. But let me make a start.
One source of confusion is when people think of floating-point numbers as approximations. That's muddy thinking. A floating-point number is not approximately anything; it's an exact value. The problem is that it may not be the value you wanted.
If I...
Continue reading Floating-Point Numbers Are Precise!
The Lost Monty Python Cartoon
originally posted: 2007-03-18 07:58:57Last summer I was showing my oldest nephew some Monty Python. Specifically, I showed him episode 24: How Not To Be Seen. It's a corker of an episode, full of great sketches—a playwright who is fascinated by train timetables (and his commenter), Conquistador Coffee, a movie director with gigantic teeth, a survey of ludicrous religions, and of course the eponymous sketch.
At the very end of the episode, just after the end credits, an announcer (played by Eric Idle)...
Continue reading The Lost Monty Python Cartoon
A Site Upgrade For 2007
originally posted: 2007-03-04 15:18:50It seems I actually have readers now! And readers demand features! I hear, and I obey.
To achieve these features, yesterday I threw out my old blog software and wrote a new one from scratch. I call new blog generator "PySa", which is supposedly short for "Python Essay". Pysa is tailor-made to generate my blog how I want it.
With PySa firmly in place, my blog has the following new features:
- The site now has a top-level RSS feed, using my brother...
Continue reading A Site Upgrade For 2007
About Momentary Fascinations
originally posted: 2007-03-04 13:38:12
Welcome!
Welcome to Momentary Fascinations! This is a blog... sort of. Really, it's an outlet for essay writing, a way for me to work off my occasional topical obsessions.Every so often, I'll go on a real information bender. I'll go deep into some subject, doing a bunch of research and filling my head with knowledge, until—inevitably—I burn out and move on. This was usually a complete waste of time; I wouldn't use the information for much of...
Continue reading About Momentary Fascinations
Vista: The World's First User-Hostile Operating System
originally posted: 2007-02-23 15:11:59Engineers have been joking for years that a particular software package, far from being "user-friendly", is actively "user-hostile". But Vista is the first operating system that is deliberately user-hostile, and it is entirely by design. I don't ever, ever want to buy Vista or own a computer with Vista on it—and I've been a "Windows" guy for more than 15 years. (In fact, this is the straw that broke this camel's back—but that's a topic for another day.)
You...
Continue reading Vista: The World's First User-Hostile Operating System
Tales Of The Self-Indulgent: Manfac by Martin Caidin
originally posted: 2007-01-20 12:45:19Martin Caidin was a prolific author of science-fiction novels and serious military history. He is probably most famous for his 1972 novel Cyborg, which was adapted into a TV movie and series: The Six-Million Dollar Man starring Lee Majors. Cyborg was the story of an ex-astronaut test pilot named Steve Austin. Austin was taking off in a new experimental aircraft when it suffered catestrophic equipment failure—an accident that leaves him alive but mutilated. ...
Continue reading Tales Of The Self-Indulgent: Manfac by Martin Caidin
Tales Of The Self-Indulgent: Earthweb by Marc Stiegler
originally posted: 2007-01-20 12:14:41Make no mistake: I'm a big fan of Marc Stiegler's writing. He's a real-life technologist, having worked as a manager at Autodesk (on Project Xanadu no less); these days he works as a researcher at HP, on subjects like capability-based computer security. As such, the technology featured in his stories has a decidedly realistic feel. He's published two sci-fic novels and a short story collection, and I own and enjoy all three.
Stiegler's first book, 1988's David's Sling, is one of...
Continue reading Tales Of The Self-Indulgent: Earthweb by Marc Stiegler
How To Use Mercurial For Local Source Code Management With A Public Subversion Server
originally posted: 2007-01-05 17:25:30I'm working on contributing some patches to Python. According to the Python patch submission guidelines:
If you're like most people, you don't have Subversion checkin privileges for Python. That means you're...
- We like unified diffs. We grudgingly accept contextual diffs. Straight ("ed-style") diffs are right out!
- If you send diffs for multiple files, concatenate all the diffs in a single text file.
- We appreciate it if you send patches relative to the current svn tree.
Continue reading How To Use Mercurial For Local Source Code Management With A Public Subversion Server
Wealth In One Lesson
originally posted: 2007-01-05 00:06:09I'm a big fan of the classic 1946 Henry Hazlitt book Economics In One Lesson. It demonstrates time and again how nearly all departures from laissez-faire economics (aka "government intrusion and regulation of the marketplace") results in the impoverishment of the citizenry. The "one lesson" it teaches from, the "broken window fallacy", is an apt metaphor for most forms of government economic policy.
But in terms of being the "one lesson" that you should use to understand capitalism, I...
Continue reading Wealth In One Lesson
Tales Of The Self-Indulgent: The American Zone by L. Neil Smith
originally posted: 2006-12-08 01:22:07It's time for another new feature here at Momentary Fascinations, what I'm calling "Tales Of The Self-Indulgent".
I like fiction. It carries you away from the worries of your world, aloft on fanciful tales of other people's lives. A momentary respite from the worries of the day. That is why I find it so thoroughly off-putting when an author throws in self-indulgent passages. It's like a deluge of cold water, snapping me out of the trance, slapping me in the face saying "Hey! ...
Continue reading Tales Of The Self-Indulgent: The American Zone by L. Neil Smith
Spyro Soundtracks, Part 2
originally posted: 2006-11-30 04:37:16Since my original posting, I've learned even more about the Spyro soundtracks. Specifically:
Read on, for a treatise in...
- I've uncovered seven new Spyro 1 tracks.
- I've found three new Spyro 2 tracks.
- I've discovered three new tracks that I don't even know which game they came from, though I suspect they're from Spyro 3.
- I've learned that we US citizens are lucky with regards to Spyro 3. (And Spyro 2 too, though less so.)
Continue reading Spyro Soundtracks, Part 2
A Thought Experiment In Morality
originally posted: 2006-11-26 03:11:15
Scenario One
A man comes to your house one day and asks for money. He has a gun, and says if you don't give him the money, he'll shoot you.Is that moral? No, it's stealing, and it's wrong.
Scenario Two
A man comes to your house one day and asks for money. He has a gun, and says if you don't give him the money, he'll shoot you.He says the money isn't for him; he needs the money to pay for treatment for his sick mother.
Is that...
Continue reading A Thought Experiment In Morality
Unreal Tournament And The Moderne PC
originally posted: 2006-08-03 00:51:20The original Unreal Tournament, from 1999, was a classic—a milestone in multiplayer gaming. There are those who debated which was better, Quake 3 Arena or UT, but for my money UT was always the superior animal. The "theme" arenas were fabulous, the bot AI was a marvel, the "mutators" were amazing.
Happily, it was engineered to last; seven years later and it's still playable (and fun!). And no wonder: it was designed to run well on computers a tenth as fast as what...
Continue reading Unreal Tournament And The Moderne PC
The Spyro Soundtracks, And The Inscrutable XA Format
originally posted: 2006-07-23 07:42:31Last decade, three fine games came out for the Sony Playstation: Spyro The Dragon, Spyro 2: Ripto's Rage!, and Spyro 3: Year Of The Dragon. They were all well-crafted, with excellent graphics (for the time), a captivating art style, plenty of professional voice acting (including Tom "Spongebob Squarepants" Kenny as Spyro in the second two), and hours of fun—and occasionally challenging—gameplay.
The soundtracks for these three fine games was created by...
Continue reading The Spyro Soundtracks, And The Inscrutable XA Format
Trampled Liberties: The Federal Reserve Bank, And Fiat Currency
originally posted: 2006-04-23 15:03:32Ah, finally, the bane of blog readers everywhere: American politics. I never said I would resist its siren song, never said I wouldn't blat out my opinions on this most overwrought of topics. That said, my opinions and conclusions are different from most. Does that make me an original thinker, or a marginalized crank? By all means decide that for yourself—my only hope is that you read, and think.
In point of fact, this posting is the first in a series I've been mulling...
Continue reading Trampled Liberties: The Federal Reserve Bank, And Fiat Currency
The Kitchen Sink Is Not A Garbage Can
originally posted: 2006-03-16 09:50:56In the movie Bachelor In Paradise, Bob Hope is the only person in his suburban community with a garbage disposer in his kitchen sink. As a result, his neighbors often drop by with large bundles of garbage which he laboriously feeds into his kitchen sink.
Silly? Sure. In truth it's a plot contrivance, a device used in the movie to get characters together so they can interact. But it got me reflecting. I grew up with a lot of seemingly-arbitrary rules about what should and should not...
Continue reading The Kitchen Sink Is Not A Garbage Can
My New Business Cards
originally posted: 2006-01-27 08:18:35There are two main ways I organize my to-do lists: for large projects with lots to do, I'll use a text file or HTML file. For everything else, I generally use plain white 3x5 index cards. I go through 3x5 cards like a paper shredder; on a busy day I'll burn through ten or twenty.
Organizing yourself with index cards is nothing new; in fact, there's a whole category at 43 Folders on organizing with index cards. (I know, I know, that's nothing special, there's a web site for anything and...
Continue reading My New Business Cards
64-Bit Color... And 16-Bit Floats
originally posted: 2006-01-24 21:37:38Have you seen the HDR rendering in Half-Life 2: Lost Coast? That is possible because of the next big thing in graphics: going from 32-bit color to 64-bit color. But this revolution in color isn't as simple as just making everything twice as big.
32-bit color uses four 8-bit integers to represent red, green, blue, and alpha. (Alpha means whatever you need it to mean; most commonly it's used for opacity.) Thus, each of the four values can go from 0 to...
Continue reading 64-Bit Color... And 16-Bit Floats
Unbrick Powerup Icons
originally posted: 2006-01-19 21:55:01This is the first of what may be a series of good ol' "developer blog" entries. I'm working away in relative anonymity here, and there are some parts of this project that may be interesting to read about. Let's find out!
The game I'm working on is an "Arkanoid-style" game. That's like a "Breakout" game, but with powerups.
I'm in the middle of overhauling the entire look of the game, because I finally realized the game looked too busy. I've sent the game to two other indie...
Continue reading Unbrick Powerup Icons
Nintendo: In The Race To Be #2
originally posted: 2006-01-19 01:00:22Nintendo's entry into the Seventh generation consoles is the Nintendo Revolution. Few details have been released about it. But, from what we know based on official statements and reliable rumors, it will be nowhere near as powerful as the other two Seventh generation consoles will be (the Microsoft XBox 360 and the Sony PlayStation 3). The best estimate so far—and this is from a Nintendo spokesman—is that it will only be about twice as powerful as the four-year-old...
Continue reading Nintendo: In The Race To Be #2
Why Games Won't Be Much Better On The New Generation Of Consoles
originally posted: 2006-01-16 23:29:59Every couple of years or so, the home video game console makers conspire to make a new "generation" of consoles. As I post this, a new "generation" is upon us; the Microsoft XBox 360 is already out, and the Sony PlayStation 3 and Nintendo Revolution are due to be released this year.
While I am keen to see them—and will, in all likelyhood, buy all three—I can't help but think that this will be a less exciting step forward than previous generations. Why? Two reasons:...
Continue reading Why Games Won't Be Much Better On The New Generation Of Consoles
ReplayGain
originally posted: 2006-01-12 23:13:11From the "good idea!" department.
If you listen to a lot of music, surely you've noticed that some of it is very quiet, and some of it is very loud. Classical music can be very soft, wheras modern pop hits are engineered in the studio to be as uniformly loud as possible (using a technique called "compressing" the signal).
That's all well and good, but what if you've got both queued up in your MP3 player and you listen to both tracks in a row? If the volume is loud enough for the...
Continue reading ReplayGain
FLAC
originally posted: 2006-01-12 10:14:11I have a lot of music. I genuinely don't know how many CDs I own; it's been a long time since I invested the time to count them. I'm sure it's over 2000, and it may be as many as 2500 or even 3000.
Over the years, I've ripped most of it to MP3s. I've used various quality levels over the years, and re-encoded my archive a couple of times. Most recently, starting on New Years's Day 2001, I started over using 256kbps-average VBR "quality zero" joint stereo. These music...
Continue reading FLAC
Shrinky-Dink Python
originally posted: 2006-01-11 22:25:08About eighteen months ago, I realized that my plan for level creation for my game was just not going to be feasible. I'd planned to write all levels as FORTH scripts, and... well, not only is that a totally un-visual way of designing fun levels, but I was constantly tripping over the programming differences between FORTH and C (between FORTH and every other language under the sun, really). I'd wanted to use Python for scripting in my game, but the runtime was just too big. The Python...
Continue reading Shrinky-Dink Python
New For 2006
originally posted: 2006-01-11 15:41:59Finally, an update! I kind of munged my old blog system (Firedrop) sometime last year, and never fixed it, and anyway I'd grown disillusioned with that system. I've now switched to the clumsily-named PyBlosxom, and am much happier... at least for now. I have quite a backup of articles for Momentary Fascinations, so here's to turning over a new leaf in 2006 and letting 'er...
Continue reading New For 2006
Makin' Out by Smyle
originally posted: 2005-06-14 19:42:14Makin' Out was commissioned by MAD Magazine in 1978, and released as a free "flexi-disc" single stuck to the cover of "MAD Super-Special #26". I was in the fourth grade at the time, and I remember getting a copy of it and taking it over to Peter Ho's house where the two of us listened to it over and over.
Back in 1996 MAD re-released all these such one-off singles on one CD titled MAD Grooves: Classic Schlock 'n' Roll!. (Be warned: the snippet Amazon has online cuts isn't...
Continue reading Makin' Out by Smyle
A Magical C++ State Machine Implementation
originally posted: 2005-06-14 13:54:22And by magical I mean uses heavy C++ wizardry and probably shouldn't be used. I am abandoning this approach in the interests of code maintainability; this code is clever, and these days whenever I write something clever I feel ashamed.
Here's the source code, which compiles under Windows, GCC 2 and GCC 3 under Linux, and GCC 4 on Mac OS X:
// Proof-of-concept for a magical approach to state machines in C++ // Written by Larry Hastings,...
Continue reading A Magical C++ State Machine Implementation
The D Programming Language, and my video game engine
originally posted: 2005-04-13 19:20:31I've been writing a video game for Windows for more than two years now. At its heart is a game engine of my own fiendish design. I say "fiendish" because it's, well, awful. I plan on finishing my current game, then doing another game with this source tree. After that, if I am any sort of even mild success at this, I shall throw away this source tree and begin anew—which is something I'm quite looking forward to.
In my current engine, I wrote nearly everything myself. I feel in...
Continue reading The D Programming Language, and my video game engine
Ridge Racer for the Sony PSP
originally posted: 2005-04-08 10:08:32I got a PSP on the day they came out. It's been a lot of fun.
Initially I got Wipeout Pure, Twisted Metal Head-On, and Ape Escape: On The Loose. I quickly discovered that Ape Escape was a port of the original Ape Escape for the PS1. Well, I played six years ago. And actually re-played a year or two ago when I got Ape Escape 2.
So I exchanged it, plus $20, for Lumines. Everything you hear about Lumines is true; it's fun,...
Continue reading Ridge Racer for the Sony PSP
'75 aka Stay With You
originally posted: 2005-04-06 09:13:07Lemon Jelly has finally come out with a new album! It's called '64-'95, and it's... uneven, which is something new for them.
But then there's a lot of new territory here. The concept behind the album was to build on samples from old records—from the years 1964 to 1995, hence the name. On first listen, much of the album strays from the classic Lemon Jelly "sound"; that uniformity of style that made their first two albums as close in timbre as Jean-Michel Jarre's...
Continue reading '75 aka Stay With You
Welcome to Momentary Fascinations!
originally posted: 2005-04-06 09:12:03This was the first posting, but it's basically been rolled over into my "About" page, About Momentary...
Continue reading Welcome to Momentary Fascinations!